Instant messaging (“IM”) is a known form of substantially real-time communication between two or more computing devices that is often based on typed text. The text (and, more recently, other types of data, such as electronic files, streaming content or even voice) is conveyed between the computing devices over a network such as the Internet. Each computing device executes an IM client software application (sometimes referred to simply as an “IM client”) associated with an IM service. The IM service defines a protocol for instant messaging which may be proprietary. Popular instant messaging services on the public Internet currently include .NET MESSENGER SERVICE, AOL® INSTANT MESSENGER™ (AIM), EXCITE® PAL, GADU-GADU, GOOGLE TALK™, iCHAT®, ICQ®, JABBER®, QNEXT™, QQ®, SKYPE® and YAHOO!® Messenger. Multi-protocol clients such as GAIM, TRILLIAN™ and Miranda may eliminate or reduce the need for separate client software applications for different IM services. Popular enterprise IM solutions include IBM LOTUS SAMETIME™, NOVELL GROUPWISE® and MICROSOFT® Office Live Communications Server.
Most if not all IM services have an associated presence service. A presence service permits each user to see whether other users in a user-specified set of contacts (commonly known as a “contact list”, “buddy list” or “friend list”) are currently on-line and available for exchanging instant messages. The availability of each contact may be indicated by way of a presence state indicator such as “available”, “busy”, “idle”, “do not disturb”, or “out to lunch” for example, which is displayed by the IM client. Presence information is updated by way of presence updates, which are automatically sent to users who have elected to receive them in respect of a specified set of contacts. A presence service client that is associated with, and in many cases integrated with, the IM client handles presence updates and generally maintains presence state indicators for display to the user, typically by way of the IM client user interface. Presence service clients may also be used in association with other types of communication clients, such as Voice over Internet Protocol (VoIP) clients. When a contact's presence service client detects that the availability of the contact has changed, it automatically reports the changed availability to other users. This is typically done by way of a central server, which in the case of an instant messaging system is a central IM server. Specifically, the report regarding changed status is sent to the central IM server, which in turn reports the changed availability by way of presence updates that are sent to all connected IM users who have elected to receive such updates regarding that contact. A presence update is a communication (e.g. a message) which provides an indication of the current availability of the contact for communication (e.g. instant messaging). Presence services and instant messaging are both described in further detail in “RFC 2778—A Model for Presence and Instant Messaging”, which is available at www.ietf.org/rfc2778.txt and is known to those of ordinary skill in the art.
In some cases, the computing device that executes the presence service client is a wireless communication device. For example, an apparatus and method for wireless instant messaging is described in U.S. Patent Publication No. 2006/0142030 A1, which is incorporated by reference hereinto. The IM client software application executing at a wireless communication device may be referred to as a “mobile IM client”, and the associated presence service client may be referred to as a “mobile presence service client”. Mobile presence service clients may receive presence updates over a wireless connection. If the frequency and number of presence updates is high, as may occur when the number of contacts in the contact list of the wireless communication device user is large, various problems may result. Firstly, a large portion of the wireless connection bandwidth may be consumed by incoming presence updates. Because many wireless service providers charge subscribers based (at least in part) upon the amount of data received, the receipt of frequent and numerous presence updates may disadvantageously increase subscription costs. Secondly, receiving and processing a large number of presence updates may consume a significant amount of power at the wireless communication device, which may in turn undesirably shorten battery life. This may be especially true if each presence update causes the wireless communication device to “awaken” from a power-saving mode and remain in that awakened (non-power-saving) mode for some minimum period of time. Thirdly, because some wireless providers or wireless network types may deem each transmission of one or more presence updates to constitute a “call”, any call statistics that are maintained for the device may be significantly skewed by the transmission of frequent individual presence updates. Finally, the frequent transmission of messages containing only one presence update apiece may be inefficient because the overhead associated with each message (e.g. generating, communicating and interpreting header information such as checksums) may be unacceptably high. These shortcomings may be endemic in presence services regardless of whether they are associated with instant messaging or other forms of communication (e.g. VoIP). A solution which mitigates or obviates one or more of these shortcomings would be desirable.